V nasledujúcich príkladoch budeme vyšetrovať priebeh goniometrických funkcií a kresliť ich grafy. Sú to funkcie definované predpisom $$y = \sin x \\ y = \cos x \\ y = \tan x.$$
Pri vyšetrovani priebehu každej takejto funkcie nás tu zaujímajú predovšetkým tieto informácie:
Dokumentácia:
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from maux import *
Nakreslenie grafu funkcie $$y = \sin x$$ na intervale $\langle -2 \pi, 4 \pi \rangle$.
#### vstupné údaje
def f(X): return np.sin(X)
X = np.linspace(-2*np.pi, 4*np.pi, 12*10+1)
Y = f(X)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(12, 2)
### diagram
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = \sin\ x$")
## graf funkcie
ax.plot(X, Y)
## 1. súradnicová os
xtick_numerators = range(-4, 8+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_tick(n, r"\pi", 2) for n in xtick_numerators])
#ax.set_xticklabels([r'$-2\pi$', r'$-3\pi/2$', r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$', r'$3\pi/2$', r'$2\pi$', r'$5\pi/2$', r'$3\pi$', r'$7\pi/2$', r'$4\pi$']) # (takmer) to isté, len zapísané iným spôsobom
## 2. súradnicová os
ax.set_yticks([-1, 0, 1])
## spoločné nastavenia pre obe osi
ax.axis('equal')
### archivácia obrázka
#plt.savefig("ex04_1_1.png")
### samotné zobrazenie
plt.show()
plt.close('all')
Vyšetrenie priebehu funkcie $$y = \sin x$$ na intervale $\langle 0, 2 \pi \rangle$.
#### vstupné údaje
def f(X): return np.sin(X)
X = np.linspace(0, 2*np.pi, 2*50+1)
#### obrázok s dvoma diagramami
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, sharex=True, sharey=True)
fig.set_size_inches(12, 2)
### 1. diagram
init_subplot(ax1)
ax1.set_title(r"Graf funkcie $y = \sin\ x$")
## graf funkcie
ax1.plot(X, f(X))
### 2. diagram
init_subplot(ax2)
ax2.set_title("Priebeh funkcie")
## intervaly, na ktorých je funkcia monotónna
X1 = X[X <= np.pi/2]
XY1 = ax2.plot(X1, f(X1), label="rastúca")
X2 = X[(np.pi/2 <= X) & (X <= 3*np.pi/2)]
ax2.plot(X2, f(X2), label="klesajúca")
X3 = X[3*np.pi/2 <= X]
ax2.plot(X3, f(X3), c=XY1[0].get_color())
## nulové body
ax2.plot(0, 0, 'ko', label="nulový bod")
ax2.plot(np.pi, 0, 'ko')
ax2.plot(2*np.pi, 0, 'ko')
## extrémy
ax2.plot(np.pi/2, 1, 'ro', label="maximum")
ax2.plot(3*np.pi/2, -1, 'mo', label="minimum")
## zvyšné nastavenia 2. diagramu
ax2.legend(loc=(1, 0.15))
ax2.grid()
### spoločné nastavenie pre oba diagramy
xtick_numerators = range(0, 4+1)
plt.xticks([n * np.pi / 2 for n in xtick_numerators],
[smart_tick(n, r"\pi", 2) for n in xtick_numerators])
plt.yticks([-1, 0, 1])
### archivácia obrázka
#plt.savefig("ex04_1_2.png")
### samotné zobrazenie
plt.show()
plt.close('all')
Nakreslite do jedného obrázka grafy sínusov $$y = \sin nx$$ na intervale $\langle -2 \pi, 4 \pi \rangle$ pre $n = \frac{1}{2}, 1, 2$.
To isté ako v predchadzajúcom príklade, len vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets
.
#### vstupné údaje
def f(X, n): return np.sin(n*X)
X = np.linspace(-2*np.pi, 4*np.pi, 12*100+1)
#### obrázok s grafom sin nx
def plot_sin(n):
fig, ax = plt.subplots()
fig.set_size_inches(12, 2)
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = \sin\ {0}{{x}}$".format(n))
ax.plot(X, f(X, n))
xtick_numerators = range(-4, 8+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_tick(n, r"\pi", 2) for n in xtick_numerators])
ax.set_yticks([-1, 0, 1])
plt.show()
plt.close('all')
#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_sin, n=widgets.SelectionSlider(options={'1/2': 1/2, '1': 1, '2': 2}, value=1));
Vyšetrite priebeh funkcie $$y = \frac{\sin x}{x}$$ na intervale $\langle -4 \pi, 4 \pi \rangle$.
Nakreslite graf funkcie $$y = \cos x$$ na intervale $\langle 0, 2 \pi \rangle$.
Vyšetrite priebeh funkcie $$y = \cos x$$ na intervale $\langle 0, 2 \pi \rangle$.
Nakreslite do jedného obrázka grafy kosínusov $$y = \cos nx$$ na intervale $\langle -2 \pi, 4 \pi \rangle$ pre $n = \frac{1}{2}, 1, 2$.
To isté ako v predchadzajúcom príklade, len vykreslenie nech sa deje pomocou interaktívnych prvkov knižnice ipywidgets
.
Nakreslite do jedného obrázka grafy funkcií $y = \sin x$ a $y = \cos x$ na intervale $\langle -2 \pi, 4 \pi \rangle$.
Nakreslite graf funkcie $$y = \sin\, 2x + \sin\ 4x$$ na intervale $\langle - \pi, 2 \pi \rangle$. Vyznačte nulové body tejto funkcie. Ich súradnice nevypisujte!
Nakreslite graf funkcie $$y = \sin 20x + \sin 22x$$ na intervale $\langle - \pi, 2 \pi \rangle$.
To isté ako v predchadzajúcich dvoch príkladoch, ale tentokrát pre funkciu
$$y = \sin\, ax + \sin\ bx,$$
kde parametre nadobúdajú hodnoty
$a \in \{1, \ldots, 20\}$ a $b \in \{1, \ldots, 22\}$.
Vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets
.
#### vstupné údaje
def f(a, b): return np.sin(a*X) + np.sin(b*X)
X = np.linspace(-np.pi, 2*np.pi, 6*42*100+1)
#### obrázok s grafom funkcie
def plot_f(a, b):
fig, ax = plt.subplots()
fig.set_size_inches(18, 4)
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = \sin\ {0}x + \sin\ {1}x$".format(a,b))
ax.plot(X, f(a, b))
xtick_numerators = range(-2, 4+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_tick(n, r"\pi", 2) for n in xtick_numerators])
ax.set_yticks([-2, -1, 0, 1, 2])
plt.show()
plt.close('all')
#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_f,
a=widgets.IntSlider(min=1,max=20,step=1,value=2),
b=widgets.IntSlider(min=1,max=22,step=1,value=4));
Nakreslenie grafu funkcie $$y = \tan x$$ na intervale $\langle -2 \pi, 4\pi \rangle$.
#### vstupné údaje
def f(X): return np.tan(X)
X = np.linspace(-(5/2)*np.pi, (5/2)*np.pi, 10*100+1)
Xs = []
for n in range(-5, 5, 2):
Xs.append(X[(n*np.pi/2 < X) & (X < (n+2)*np.pi/2)])
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(12, 6)
### diagram
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = \tan\, x$")
## graf funkcie
for X in Xs:
ax.plot(X, f(X), c='b')
## asymptoty bez smernice
Ay = np.linspace(-5, 5)
for n in range(-5, 5+1, 2):
Ax = np.ones(len(Ay)) * n * np.pi/2
ax.plot(Ax, Ay, 'k--', lw=1)
## 1. súradnicová os
xtick_numerators = range(-5, 5+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_tick(n, r"\pi", 2) for n in xtick_numerators])
## 2. súradnicová os
ax.set_ylim(-5, 5)
### archivácia obrázka
#plt.savefig("ex04_1_3.png")
### samotné zobrazenie
plt.show()
plt.close('all')